草庐IT

C++ 类 class

全部标签

c++ - 有条件的? : operator with class constructor

谁能解释一下为什么c和c1的构造方式不同。我知道我引用了由“?”创建的拷贝运算符,在构造后被销毁,但为什么在第一种情况下它的行为方式不同。我已经测试了它是否优化,但即使从控制台读取条件,我也有相同的结果。提前致谢#includeclassfoo{public:foo(conststd::vector&var):var{var}{};conststd::vector&var;};std::vectorf(){std::vectorx{1,2,3,4,5};returnx;};intmain(){std::vectorx1{1,2,3,4,5,7};std::vectorx2{1,2,3,

c++ - 有条件的? : operator with class constructor

谁能解释一下为什么c和c1的构造方式不同。我知道我引用了由“?”创建的拷贝运算符,在构造后被销毁,但为什么在第一种情况下它的行为方式不同。我已经测试了它是否优化,但即使从控制台读取条件,我也有相同的结果。提前致谢#includeclassfoo{public:foo(conststd::vector&var):var{var}{};conststd::vector&var;};std::vectorf(){std::vectorx{1,2,3,4,5};returnx;};intmain(){std::vectorx1{1,2,3,4,5,7};std::vectorx2{1,2,3,

c++ - "enum class"MSVC 10.0 的仿真或可靠替代方案

我正在为以下问题寻找一种hacky的解决方案:GCC4.4+接受以下c++0x代码:enumclassmy_enum{value1,value2};允许这样使用:my_enume=my_enum::value1;这带来了所有的花里胡哨。我想让这段代码与MSVC2010兼容,大意是使用语法不会改变。我之前已经思考过here,并且接受的答案有效,但是需要枚举和枚举值的两个不同名称正在破坏这两种方法的兼容性。这使得按原样替换C++0x代码当然无法使用。我想知道是否有一些#undef和#define诡计可以解决这个问题,让我使用enumclass-像语法(可能没有严格的类型安全等),但至少是相

c++ - "enum class"MSVC 10.0 的仿真或可靠替代方案

我正在为以下问题寻找一种hacky的解决方案:GCC4.4+接受以下c++0x代码:enumclassmy_enum{value1,value2};允许这样使用:my_enume=my_enum::value1;这带来了所有的花里胡哨。我想让这段代码与MSVC2010兼容,大意是使用语法不会改变。我之前已经思考过here,并且接受的答案有效,但是需要枚举和枚举值的两个不同名称正在破坏这两种方法的兼容性。这使得按原样替换C++0x代码当然无法使用。我想知道是否有一些#undef和#define诡计可以解决这个问题,让我使用enumclass-像语法(可能没有严格的类型安全等),但至少是相

c++ - std::is_class 的这种实现是如何工作的?

我正在尝试了解std::is_class的实现。我复制了一些可能的实现并编译了它们,希望弄清楚它们是如何工作的。完成后,我发现所有的计算都是在编译过程中完成的(我应该早点发现,回头看),所以gdb不能给我更多关于到底发生了什么的细节。我很难理解的实现是这个:templatestructintegral_constant{staticconstexprTvalue=v;typedefTvalue_type;typedefintegral_constanttype;constexproperatorvalue_type()constnoexcept{returnvalue;}};names

c++ - std::is_class 的这种实现是如何工作的?

我正在尝试了解std::is_class的实现。我复制了一些可能的实现并编译了它们,希望弄清楚它们是如何工作的。完成后,我发现所有的计算都是在编译过程中完成的(我应该早点发现,回头看),所以gdb不能给我更多关于到底发生了什么的细节。我很难理解的实现是这个:templatestructintegral_constant{staticconstexprTvalue=v;typedefTvalue_type;typedefintegral_constanttype;constexproperatorvalue_type()constnoexcept{returnvalue;}};names

c++ - 从 C 到 C++

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭7年前。Improvethisquestion大家好。我最近开始了一份新工作,我应该使用C++/过去5年我一直在用C语言进行编程。我正在寻找方法让我在OOP中达到可接受的水平。我有C++和OOP的所有基本概念,但没有太多的实际类设计经验。我真正在寻找的是学习类库设计的方法,因为我将在一个正在编写C++库供其他程序员使用的团队中工作。请提出诸如“职责分配”之类的原则,这些原则可以帮助我设计类(class)。

c++ - 从 C 到 C++

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭7年前。Improvethisquestion大家好。我最近开始了一份新工作,我应该使用C++/过去5年我一直在用C语言进行编程。我正在寻找方法让我在OOP中达到可接受的水平。我有C++和OOP的所有基本概念,但没有太多的实际类设计经验。我真正在寻找的是学习类库设计的方法,因为我将在一个正在编写C++库供其他程序员使用的团队中工作。请提出诸如“职责分配”之类的原则,这些原则可以帮助我设计类(class)。

c++ - GCC/VS2008 : Different behaviour of function call when templated base class is derived from itself

以下代码适用于VisualStudio2008,但不适用于GCC/G++4.3.420090804。根据C++标准,哪种行为正确?templatestructA:A{};templatestructA{};structB:A{};templatevoidFunc(constA&a){}intmain(){Aa;//isderivedfromAFunc(a);//vs2008:ok,g++:ok//Comeau:okBb;//isderivedfromAFunc(b);//vs2008:ok,g++:error,nomatchingfunctionforcalltoFunc(B&)//C

c++ - GCC/VS2008 : Different behaviour of function call when templated base class is derived from itself

以下代码适用于VisualStudio2008,但不适用于GCC/G++4.3.420090804。根据C++标准,哪种行为正确?templatestructA:A{};templatestructA{};structB:A{};templatevoidFunc(constA&a){}intmain(){Aa;//isderivedfromAFunc(a);//vs2008:ok,g++:ok//Comeau:okBb;//isderivedfromAFunc(b);//vs2008:ok,g++:error,nomatchingfunctionforcalltoFunc(B&)//C